package org.small.shop.phone.api.process.orders.service;

import org.small.shop.phone.api.process.orders.pojo.CreateOrderVo;
import org.small.shop.phone.api.process.orders.pojo.SelectOrders;
import org.small.shop.phone.api.process.orders.pojo.UnpaidOrdersVo;

public interface TblWxOrdersService {

	/**
	 * 创建订单
	 * 
	 * @param appId
	 * @param orderInfo
	 * @return
	 * @throws Exception
	 */
	public CreateOrderVo getCreateOrderInfo(String appId, CreateOrderVo orderInfo) throws Exception;

	/**
	 * 
	 * @param appId              用户appid
	 * @param orderId            用户订单号
	 * @param ordNum             用户购买的数量
	 * @param goodsId            用户选择商品id
	 * @param buyNum             用户购买的数量
	 * @param skuId              用户选择商品的规格id
	 * @param addrId             用户发货地址id
	 * @param ordSubscriberName  用户订购人名称
	 * @param ordSubscriberPhone 用户订购人手机号
	 * @param ordRemarks         用户备注信息
	 * @throws Exception
	 */
	public void createOrder(String appId, String orderId, String ordNum, String buyNum, Integer addrId,
			String ordSubscriberName, String ordSubscriberPhone, String ordRemarks, CreateOrderVo orderInfo)
			throws Exception;

	/**
	 * 
	 * @param appId   用户appid
	 * @param orderId 用户订单号
	 * @return
	 */
	public UnpaidOrdersVo getUnpaidOrderByOrdId(String orderId, String appId) throws Exception;

	/**
	 * 取消未付款订单
	 * 
	 * @param appId   用户appid
	 * @param orderId 用户订单号
	 */
	public void abolishmentOrderStatus(String orderId, String appId) throws Exception;

	/**
	 * 查询不同状态下的订单
	 * 
	 * @return
	 */
	public SelectOrders selectAllOrdsByUserIdOrSta(String appId, SelectOrders selectOrders);

	/**
	 * 删除订单
	 * 
	 * @param appId   用户appid
	 * @param orderId 用户订单号
	 * @throws Exception
	 */
	public void delectOrderByOrdId(String orderId, String appId) throws Exception;

	/**
	 * 申请退款
	 * 
	 * @param appId   用户appid
	 * @param orderId 用户订单号
	 */
	public void refundOrders(String orderId, String appId) throws Exception;

	/**
	 * 确认收货
	 * 
	 * @param orderId
	 * @param appId
	 */
	public void confirmOrdersByOrdId(String orderId, String appId) throws Exception;

	/**
	 * 订单支付
	 * 
	 * @param appId   用户appid
	 * @param orderId 用户订单号
	 */
	public void payOrdersByOrdId(String orderId, String appId) throws Exception;

}
